Verilog-A Cadence 工具与库

Cadence 环境下建模的现成资源:ahdl 库、Model Writer、SMG 自动生成工具。可以少写很多代码。

ahdl 库(现成 Verilog-A 模型)

real real_offset;
analog begin
    real_offset = sigin_offset + (V(sigout)>(sigout_high+sigout_low)/2)?(1e-3):(-1e-3);
    V(sigout) <+ 0.5*(sigout_high - sigout_low)
                * tanh(comp_slope*(V(sigin, sigref)- real_offset))
                + (sigout_high + sigout_low)/2;
end

Model Writer(快速生成简单模型)

Schematic Model Generator(SMG,示意图建模)

网表中的 Verilog-A(ahdl_include)

ahdl_include "file_name.va";
//ahdl_include "/home/user/proj/invx0small-verilog.va";
ahdl_include "/home/user/proj/invx0mid-verilog.va";
//ahdl_include "/home/user/proj/invx0large-verilog.va";

模型工艺角(corner)实现

方法 1:SPICE 子电路包(参数传递)

SPICE 参数不能直接传给 Verilog-A 实例参数 → 用子电路包裹:

ahdl_include "verilog.va"
subckt device_m (in, out)
ex (in, out) model_name param1=param_A
ends device_m

方法 2:corner 文件换 va 文件(简单实用)

section m_tntp
ahdl_include "/home/user/proj/invx0mid-verilog.va";
endsection m_tntp
section m_snsp
ahdl_include "/home/user/proj/invx0large-verilog.va";
endsection m_snsp

用 Verilog-A 做验证平台(testbench)

module testbench ();
CircuitTop I1(net_vdd, net2, net3, ...);
vsource #(.dc(5)) I2(net_vdd, gnd!);
vsource #(.type("pwl"), .dc(0), .file("input-signal.txt")) I3(net2, net3);
endmodule

命令行仿真示例

spectre input.scs ../psf/spectr.out -format psfxl -raw ../psf

相关笔记